home *** CD-ROM | disk | FTP | other *** search
/ Dangerous Blondes / Dangerous Blondes.iso / title.mst < prev    next >
Text File  |  1994-03-06  |  16KB  |  502 lines

  1. '**************************************************************************
  2. '*
  3. '* TITLE.MST - Viewer Runtime Setup Script
  4. '*
  5. '* CUSTOMIZING TITLE.MST
  6. '*
  7. '* For a simple Setup routine, you just need to assign values to the 
  8. '* series of variables following the heading "Setup Variables". This
  9. '* script also provides for the following more-advanced options, which
  10. '* are supported by subroutines located later in this script:
  11. '*
  12. '* Option                                         See Subroutine
  13. '* ------------------------------------------     ---------------------
  14. '* Install more than one .MVB file                ModifyViewerIni
  15. '* Install Help title                             ModifyViewerIni
  16. '* Install custom DLLs                            ModifyViewerIni
  17. '* Install multiple Program Manager items         ModifyProgramManager
  18. '* Display a custom icon with the ProgMan item    ModifyProgramManager
  19. '* Install custom fonts                           RegisterCustomFonts
  20. '* Install Video for Windows runtime files        RegisterDrivers
  21. '*
  22. '* Each customization note starts with the heading CUSTOMIZATION.
  23. '*
  24. '**************************************************************************
  25.     
  26.     '' Global variables
  27.  
  28.     GLOBAL TitleShortName$
  29.     GLOBAL TitleLongName$
  30.     GLOBAL MVBFileName$
  31.     GLOBAL PromptForPath%
  32.     GLOBAL DefaultPath$
  33.     GLOBAL ProgManGroup$
  34.     GLOBAL ProgManItem$
  35.  
  36.  
  37.     '' ****************************************************************
  38.     '' ** Setup Variables
  39.     '' ****************************************************************
  40.  
  41.     '' Set the following string to a short form of the title name
  42.     '' (for example, "Gallery")
  43.     
  44.     TitleShortName$ = "Blondes"
  45.     
  46.     '' Set the following string to a long form of the title name
  47.     '' (for example, "Viewer 2.0 Gallery")
  48.     
  49.     TitleLongName$ = "Dangerous Blondes"
  50.         
  51.     '' Set the following variable to the name of the MVB file, without 
  52.     '' the filename extension (for example, "GALLERY")
  53.         
  54.     MVBFileName$ = "gvc3"
  55.         
  56.     '' The following variable determines whether Setup prompts the user
  57.     '' to specify a directory in which to install title files. (Files
  58.     '' to be installed on the hard disk must be listed in the TITLE.INF 
  59.     '' file under the [Installed Title Files] section.) Specify one of
  60.     '' the following values:
  61.     ''
  62.     '' 0    Install title files in the Windows directory (default setting).
  63.     ''      This is an appropriate setting if you have a limited number
  64.     ''      of files to copy (for example, a single custom icon or DLL).
  65.     ''
  66.     '' 1    Display a dialog box to prompt the user for a directory in 
  67.     ''      which to install files
  68.         
  69.     PromptForPath% = 0
  70.         
  71.     '' If you have specified 1 in PromptForPath%, set the following 
  72.     '' variable to the default path that will be displayed in the dialog
  73.     '' box (for example, "C:\GALLERY").
  74.         
  75.     DefaultPath$ = "c:\blondes"
  76.     
  77.     '' Set the following variable to the name of the program manager 
  78.     '' group you would like to create (for example, "Viewer 2.0 Gallery")
  79.         
  80.     ProgManGroup$ = "Blondes"
  81.     
  82.     '' Set the following variable to the caption of the program manager 
  83.     '' item for your title (for example, "Gallery")
  84.         
  85.     ProgManItem$ = "Blondes"
  86.     
  87.     '***********************************************************************
  88.     '** Mainline
  89.     '***********************************************************************
  90.  
  91.     GLOBAL CUIDLL$
  92.  
  93.     '' Include files
  94.     '$INCLUDE 'setupapi.inc'
  95.     
  96.     '' Custom UI dll
  97.     CUIDLL$ = "mscuistf.dll"
  98.     
  99.     '' Dialog ID's
  100.     CONST DESTPATH      = 1000
  101.     CONST APPHELP       = 2000
  102.     CONST TOOBIG        = 3000
  103.     CONST BADPATH       = 4000
  104.     CONST SUCCESS       = 5000
  105.     
  106.     '' Bitmap ID
  107.     CONST LOGO = 1
  108.     
  109.     '' Functions and subroutines
  110.     DECLARE FUNCTION AddFont LIB "mscuistf.dll" (szFont$, szName$) AS INTEGER
  111.     DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  112.     DECLARE FUNCTION GetTitleDir (szDefault$) AS STRING
  113.     DECLARE FUNCTION CopyFiles(szTitleDir$) AS INTEGER
  114.     DECLARE SUB RegisterFont(fontfile$, fontname$)
  115.     DECLARE SUB ModifyViewerIni
  116.     DECLARE SUB RegisterCustomFonts
  117.     DECLARE SUB ModifyProgramManager
  118.     DECLARE SUB ShowSuccess
  119.     DECLARE SUB RegisterDrivers
  120.     DECLARE SUB DoNoEvil
  121.     
  122.     '' The following statement turns size checking off. Set it to scmOnFatal 
  123.     '' to enable size checking, where Setup will compare the disk file size 
  124.     '' with the INF file size and report an error if they are not the same.
  125.     
  126.     i% = SetSizeCheckMode(scmOff)
  127.     
  128.     '' Set the title and banner bitmap. You must rebuild MSCUISTF.DLL to 
  129.     '' alter the banner bitmap.
  130.     
  131.     SetTitle "Dangerous Blondes Setup"
  132.     SetBitmap CUIDLL$, LOGO 
  133.     
  134.     '' Read in the INF file.
  135.     
  136.     DoNoEvil
  137.  
  138.     ReadInfFile GetSymbolValue("STF_CWDDIR") + "TITLE.INF"
  139.     
  140.     '' Decide where to put title files
  141.     IF PromptForPath% = 1 THEN
  142.         szTitleDir$ = GetTitleDir(DefaultPath$)
  143.         IF szTitleDir$ = "" THEN
  144.             GOTO QUIT
  145.         ENDIF
  146.     ELSE
  147.         szTitleDir$ = GetWindowsDir()
  148.     ENDIF   
  149.     
  150.     '' Copy files
  151.     IF CopyFiles(szTitleDir$) = 0 THEN
  152.         GOTO QUIT
  153.     ENDIF
  154.  
  155.     '' Create the MVIEWER2.EXE MVB association 
  156.     CreateIniKeyValue "WIN.INI", "Extensions", "MVB", "mviewer2.exe", cmoNone
  157.  
  158.     '' Register in VIEWER.INI
  159.     ModifyViewerIni
  160.  
  161.     '' Register custom fonts
  162.     RegisterCustomFonts
  163.  
  164.     '' Register drivers
  165.     RegisterDrivers
  166.     
  167.     '' Modify Program Manager
  168.     ModifyProgramManager    
  169.     
  170.     '' Success dialog
  171.     ShowSuccess
  172.     
  173.     '' Now start the title
  174.  
  175.     '' RUN "mviewer2.exe " + MVBFileName$ + ".MVB", NOWAIT
  176.  
  177.         j% = DoMsgBox("Be sure to Install Video for Windows 1.1!",TitleLongName$,0)
  178.  
  179.     j% = DoMsgBox("Restart Windows before playing!",TitleLongName$,0)
  180.  
  181.  
  182. QUIT:
  183.     
  184.     END
  185.     
  186.  
  187. '*************************************************************************
  188. '** Purpose:
  189. '**     Prompts the user for a path for the title files
  190. '** Arguments:
  191. '**     szDefault$ - default path
  192. '** Returns:
  193. '**     New valid path name, or "" if the user quit.
  194. '*************************************************************************
  195.  
  196. FUNCTION GetTitleDir (szDefault$) STATIC AS STRING
  197.  
  198.     SetSymbolValue "String", TitleShortName$
  199.     SetSymbolValue "EditTextIn", szDefault$
  200.     SetSymbolValue "EditFocus", "ALL"
  201.  
  202.     GETPATH:
  203.  
  204.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, "FHelpDlgProc")
  205.  
  206.     IF sz$ = "CONTINUE" THEN
  207.         szTitleDir$ = GetSymbolValue("EditTextOut")
  208.         IF IsDirWritable(szTitleDir$) = 0 THEN
  209.  
  210.             BADPATH:
  211.  
  212.             sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfoDlgProc", 0, "")
  213.             IF sz$ = "REACTIVATE" THEN
  214.                 GOTO BADPATH
  215.             END IF
  216.             UIPop 1
  217.             GOTO GETPATH
  218.         END IF
  219.         UIPop 1
  220.         CreateDir szTitleDir$, cmoNone
  221.  
  222.     ELSEIF sz$ = "REACTIVATE" THEN
  223.         GOTO GETPATH
  224.  
  225.     ELSE
  226.         szTitleDir$ = ""
  227.  
  228.     END IF
  229.  
  230.     GetTitleDir = szTitleDir$
  231.  
  232. END FUNCTION
  233.  
  234.  
  235. '*************************************************************************
  236. '** Purpose:
  237. '**     Copies the files in the INF file
  238. '** Arguments:
  239. '**     szTitleDir$ - destination directory for the title files
  240. '** Returns
  241. '**     1 if files were copied, 0 otherwise
  242. '*************************************************************************
  243.  
  244. FUNCTION CopyFiles(szTitleDir$) STATIC AS INTEGER
  245.  
  246.     '' Add all system files to the copy list
  247.     AddSectionFilesToCopyList "System Files", GetSymbolValue("STF_SRCDIR"), GetWindowsSysDir()
  248.     
  249.     '' Add all of the title files to the copy list
  250.     AddSectionFilesToCopyList "Installed Title Files", GetSymbolValue("STF_SRCDIR"), szTitleDir$
  251.     
  252.     '' Check size
  253.     szExtras$ = "Extra"
  254.     szCosts$ = "Costs"
  255.     szNeededs$ = "Neededs"
  256.     FOR i% = 1 TO 26 STEP 1
  257.         AddListItem szExtras$, "0"
  258.     NEXT i%
  259.     
  260.     '' We assume that VIEWER.INI will take another 4K
  261.     ReplaceListItem szExtras$, ASC(MID$(GetWindowsDir(), 1, 1)) - ASC("A") + 1, STR$(4096)
  262.     
  263.     '' Get amount of space required
  264.     StillNeed& = GetCopyListCost(szExtras$, szCosts$, szNeededs$)
  265.     
  266.     '' Put up a message if there is not enough space
  267.     FOR i% = 1 TO 26 STEP 1
  268.         IF VAL(GetListItem(szNeededs$, i%)) > 0 THEN
  269.     
  270.             SetSymbolValue "String1", LTRIM$(STR$(VAL(GetListItem(szCosts$, i%)) / 1024))
  271.             SetSymbolValue "String2", CHR$(i% - 1 + ASC("A"))
  272.     
  273.             TOOBIG:
  274.     
  275.             sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfoDlgProc", 0, "")
  276.             IF sz$ = "REACTIVATE" THEN
  277.                 GOTO TOOBIG
  278.             END IF
  279.             UIPop 1
  280.             CopyFiles = 0
  281.             GOTO DONTCOPY
  282.         END IF
  283.     NEXT i%
  284.     
  285.     '' Copy the files
  286.     CopyFilesInCopyList
  287.     
  288.     CopyFiles = 1
  289.  
  290. DONTCOPY:
  291.  
  292. END FUNCTION
  293.  
  294.  
  295. '*************************************************************************
  296. '** Purpose:
  297. '**     Puts up a success dialog
  298. '*************************************************************************
  299.  
  300. SUB ShowSuccess STATIC
  301.  
  302.     SUCCESS:
  303.     
  304.     SetSymbolValue "String1", TitleShortName$
  305.     sz$ = UIStartDlg(CUIDLL$, SUCCESS, "FInfoDlgProc", 0, "")
  306.     IF sz$ = "REACTIVATE" THEN
  307.         GOTO SUCCESS
  308.     END IF
  309.     UIPop 1
  310.     
  311. END SUB
  312. '*************************************************************************
  313. '** Purpose:
  314. '**     Assuage the User's fear of system destruction
  315. '*************************************************************************
  316.  
  317. SUB DoNoEvil STATIC
  318.  
  319. j% = DoMsgBox("This installation will not harm your system!", TitleLongName$, 0)
  320.     
  321. END SUB
  322.  
  323.  
  324. '*************************************************************************
  325. '** Purpose:
  326. '**     Appends a file name to the end of a directory path,
  327. '**     inserting a backslash character as needed.
  328. '** Arguments:
  329. '**     szDir$  - full directory path (with optional ending "\")
  330. '**     szFile$ - filename to append to directory
  331. '** Returns:
  332. '**     Resulting fully qualified path name.
  333. '*************************************************************************
  334.  
  335. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  336.     IF szDir$ = "" THEN
  337.         MakePath = szFile$
  338.     ELSEIF szFile$ = "" THEN
  339.         MakePath = szDir$
  340.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  341.         MakePath = szDir$ + szFile$
  342.     ELSE
  343.         MakePath = szDir$ + "\" + szFile$
  344.     END IF
  345. END FUNCTION
  346.  
  347.  
  348. '*************************************************************************
  349. '** Purpose:
  350. '**     Registers a font.
  351. '** Arguments:
  352. '**     fontfile$ - font filename
  353. '**     fontname$ - font name.
  354. '*************************************************************************
  355.  
  356. SUB RegisterFont(fontfile$, fontname$) STATIC
  357.  
  358.     '' A simple error catching wrapper around AddFont, which is a 'C' routine in MSCUISTF.DLL
  359.  
  360.     IF AddFont(fontfile$, fontname$) = -1 THEN
  361.         j% = DoMsgBox("Could not install " + fontfile$ + " font.", "Viewer Font Installation", 0)
  362.     ENDIF
  363.  
  364. END SUB
  365.  
  366.  
  367. '*************************************************************************
  368. '** Purpose:
  369. '**     Registers title in VIEWER.INI
  370. '*************************************************************************
  371.  
  372. SUB ModifyViewerIni STATIC
  373.  
  374.     '' Get the VIEWER.INI file
  375.     
  376.     szIni$ = MakePath(GetWindowsDir(), "VIEWER.INI")
  377.  
  378.     '' First register the title file, setting the Name and Path entries. 
  379.     '' We assume that the MVB file is the same directory as SETUP.EXE.
  380.     ''
  381.     '' CUSTOMIZATION: If you're installing multiple MVB files, copy the
  382.     '' following two statements for each additional file, substituting
  383.     '' the appropriate long name and MVB filename for the TitleLongName$
  384.     '' and MVBFileName$ variables.
  385.     
  386.     CreateIniKeyValue szIni$, MVBFileName$, "Name", TitleLongName$, cmoOverwrite
  387.     CreateIniKeyValue szIni$, MVBFileName$, "Path", GetSymbolValue("STF_SRCDIR"), cmoOverwrite
  388.     
  389.     '' Now we have to register the MVB file in the [FILES] section, so 
  390.     '' Viewer can find files that are not on the path and display a 
  391.     '' special message when a file is not found.
  392.  
  393.     CreateIniKeyValue szIni$, "FILES", MVBFileName$ + ".MVB", GetSymbolValue("STF_SRCDIR") + "," + "Please insert the " + TitleLongName$ + " disk.", cmoOverwrite
  394.  
  395.     '' CUSTOMIZATION: If you're installing a Help title or any custom DLLs,
  396.     '' you should copy the preceding statement for each extra title or DLL.
  397.     ''
  398.     '' Example for installing an extra title:
  399.     ''
  400.     ''    CreateIniKeyValue szIni$, "FILES", "GALHELP.MVB", GetSymbolValue("STF_SRCDIR") + "," + "Please insert the Viewer 2.0 Gallery disk.", cmoOverwrite
  401.     ''
  402.     '' Example for installing a custom DLL:
  403.     ''
  404.     ''    CreateIniKeyValue szIni$, "FILES", "GALLERY.DLL", GetSymbolValue("STF_SRCDIR") + "," + "A required file is missing. Please reinstall the Viewer Gallery.", cmoOverwrite
  405.  
  406. END SUB
  407.  
  408.  
  409. '*************************************************************************
  410. '** Purpose:
  411. '**     Creates program manager entries for the title
  412. '*************************************************************************
  413.  
  414. SUB ModifyProgramManager STATIC
  415.  
  416.     '' Create the program manager group
  417.  
  418.     szGork$ = GetSymbolValue("STF_SRCDIR")
  419.  
  420.     '' j% = DoMsgBox(szGork$, "Path Name", 0)
  421.  
  422.     CreateProgmanGroup ProgmanGroup$, "", cmoNone
  423.     ShowProgmanGroup ProgmanGroup$, 1, cmoNone
  424.     
  425.     '' Create an entry for the title
  426.      
  427.     '' [no icon] CreateProgmanItem ProgmanGroup$, ProgmanItem$, "mviewer2.exe " + MakePath(GetSymbolValue("STF_SRCDIR"), MVBFileName$ + ".MVB"), ",,,,szGork$", cmoOverwrite
  428.     
  429.     '' CUSTOMIZATION: 
  430.     ''
  431.     '' To create additional Program Manager items, copy the preceding 
  432.     '' statement for each additional item, substituting the appropriate
  433.     '' name for the MVBFileName$ variable.
  434.     ''
  435.     '' To display a custom icon with the Program Manager item, specify
  436.     '' the icon filename with the fourth parameter (this parameter is 
  437.     '' currently an empty string, ""). The following example specifies 
  438.         '' an icon with the same filename as the .MVB file:
  439.     ''
  440.     CreateProgmanItem ProgmanGroup$, ProgmanItem$, "mviewer2.exe " + MakePath(GetSymbolValue("STF_SRCDIR"), MVBFileName$ + ".MVB"), MakePath(GetSymbolValue("STF_SRCDIR"), MVBFileName$ + ".ICO")+",0,0,0,"+szGork$, cmoOverwrite
  441.  
  442. END SUB
  443.  
  444.  
  445. '*************************************************************************
  446. '** Purpose:
  447. '**     Registers custom fonts with Windows.
  448. '*************************************************************************
  449.  
  450. SUB RegisterCustomFonts STATIC
  451.  
  452.     '' CUSTOMIZATION: If you install custom fonts, then add statements
  453.     '' in this routine to register the fonts with the current Windows 
  454.     '' session and to add them to the WIN.INI [Fonts] section. 
  455.     ''
  456.     '' Note that TrueType fonts can only be installed in Windows 3.1.
  457.     '' RegisterFont automatically creates the required .FOT file for 
  458.     '' TrueType fonts.
  459.     ''    
  460.     '' The following example registers a font residing in MISTRAL.TTF
  461.     '' and installs the font with the name Mistral (True Type):
  462.     '' 
  463.     ''     RegisterFont "mistral.ttf", "Mistral (TrueType)"
  464.     ''
  465.  
  466. END SUB
  467.  
  468.  
  469. '*************************************************************************
  470. '** Purpose:
  471. '**     Registers Windows drivers
  472. '*************************************************************************
  473.  
  474. SUB RegisterDrivers STATIC
  475.  
  476. '' CUSTOMIZATION: Video for Windows is not a standard component of
  477. '' Windows 3.1. If your title uses video, proceed as follows.
  478. ''
  479. '' 1) Add the following files to the [System Files] section of the INF file:
  480. ''
  481. ''    dispdib.dll
  482. ''    msvideo.dll
  483. ''    indeo.drv
  484. ''    mciavi.drv
  485. ''    msvidc.drv
  486. ''
  487. '' 2) Add the above files to your release directory. US versions can be 
  488. ''    found in the \SYSTEM subdirectory of your Viewer disc. French and
  489. ''    German versions were not available at ship time. Please contact 
  490. ''    Microsoft or check the Multimedia Viewer section on the Microsoft
  491. ''    Compuserve Forum for further details.
  492. ''
  493. '' 3) Uncomment the following lines:
  494. ''
  495. ''    CreateIniKeyValue "WIN.INI", "mci extensions", "AVI", "AVIVIDEO", cmoNone
  496. ''    CreateIniKeyValue MakePath(GetWindowsDir(), "SYSTEM.INI"), "mci", "AVIVIDEO", "MCIAVI.DRV", cmoNone
  497. ''    CreateIniKeyValue MakePath(GetWindowsDir(), "SYSTEM.INI"), "drivers", "vidc.msvc", "msvidc.drv", cmoNone
  498. ''    CreateIniKeyValue MakePath(GetWindowsDir(), "SYSTEM.INI"), "drivers", "vidc.rt21", "indeo.drv", cmoNone
  499. ''    CreateIniKeyValue MakePath(GetWindowsDir(), "SYSTEM.INI"), "drivers", "vidc.cvid", "iccvid.drv", cmoNone
  500.  
  501. END SUB
  502.